package comcollectionday03test;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;

public class CollectionTest {
    public static void main(String[] args) {
        /*
        list系列的集合 添加元素是有序的  可重复  有索引的
        set系列的集合   添加元素是无序的  不能重复   没有索引的
        所以 遍历集合一般用 迭代器  增强for

         */

        ArrayList<String> arr = new ArrayList<>();
        //添加
        arr.add("aaa");
        arr.add("bbb");
        arr.add("ccc");

        ArrayList<String> arr2 = new ArrayList<>();
        //添加
        arr2.add("111");
        arr2.add("222");
        arr2.add("333");


        //获取长度
        int len = arr.size();

        //清空集合
        //arr.clear();

        //判断是否为空集合
        boolean empty = arr.isEmpty();

        //判断是否有这个元素  contains方法底层调用的对象的equals方法 默认为object没改写过的
        //判断对象属性要改写对象的equals方法  当前调用的String的被改写过的equals方法
        boolean contains = arr.contains("aaa");

        //删除
        arr.remove("aaa");



        //集合之间的操作

        //添加全部
        arr.addAll(arr2);

        //判断是否包含这个集合
        boolean containsAll = arr.containsAll(arr2);

        //取交集  arr中只保留 arr2有的元素
        arr.retainAll(arr2);

        //删除   arr中删除 arr2有的元素
        arr.removeAll(arr2);


        //迭代器遍历 集合   增强for 遍历集合
        //迭代器范型 应与集合保持一致
        Iterator<String> ite = arr2.iterator();
        while (ite.hasNext()){
            String s = ite.next();
            System.out.print(s + " ");
        }
        System.out.println();
        //增强for
        for (String s : arr2 ){
            System.out.print(s + " ");
        }

        //集合转数组
        //集合转数组没什么限制  但是当集合长度小于数组长度时 空位补充默认值
        String[] arr3 = arr2.toArray(new String[0]);


        //数组转集合
        //数组转换成集合 集合底层会直接引用这个数组  ，  数组长度固定  集合长度超过数组上限时 会报错

        List<String> strings = Arrays.asList(arr3);

        



    }
}
